package case1.model;

import case1.core.observer.BPMObserver;
import case1.core.observer.BeatObserver;

/**
 * description:
 * 节拍模型
 * @author Yuanml on 2020/11/11 09:49
 */
public interface BeatModelInterface {
    /***
     * description:
     * 初始化方法
     * @author Yuanml
     * @date 2020/11/11 上午9:52
     **/
    void initialize();
    /***
     * description:
     * 打开模型
     * @author Yuanml
     * @date 2020/11/11 上午9:52
     **/
    void on();
    /**
     * description:
     * 关闭模型
     * @author Yuanml
     * @date 2020/11/11 上午9:52
     **/
    void off();
    /**
     * description:
     * 设置节拍频率
     * @param bpm 节拍频率
     * @author Yuanml
     * @date 2020/11/11 上午9:52
     **/
    void setBPM(int bpm);
    /**
     * description:
     * 获取bpm
     * @return   bpm
     * @author Yuanml
     * @date 2020/11/11 上午10:30
     **/
    int getBPM();
    /**
     * description:
     * 注册观察者
     * @author Yuanml
     * @date 2020/11/11 上午9:53
     **/
    void registerBeatObserver(BeatObserver beatObserver);
    /**
     * description:
     * 移除观察者
     * @author Yuanml
     * @date 2020/11/11 上午9:54
     **/
    void removeBeatObserver(BeatObserver beatObserver);
    /**
     * description:
     * 注册观察者
     * @author Yuanml
     * @date 2020/11/11 上午9:53
     **/
    void registerBPMObserver(BPMObserver bpmObserver);
    /**
     * description:
     * 移除观察者
     * @author Yuanml
     * @date 2020/11/11 上午9:54
     **/
    void removeBPMObserver(BPMObserver bpmObserver);


}
